Variables indicadoras

A Veces es necesario utilizar variables categóricas en métodos analı́ticos que solo permiten el ingreso de variables numéricas,por lo que a veces es necesario crear variables indicadoras. Con el paquete dummies podemos hacer estas conversiones.

library(dummies)
## Warning: package 'dummies' was built under R version 3.5.2
library(kableExtra)

base <- read.csv("../bases de datos/data-conversion.csv")
kable(head(base),format = "markdown")
Age State Gender Height Income
23 NJ F 61 5000
13 NY M 55 1000
36 NJ M 66 3000
31 VA F 64 4000
58 NY F 70 30000
29 TX F 63 10000
base.dummy <- dummy.data.frame(base)
kable(head(base.dummy),format = "markdown")
Age StateNJ StateNY StateTX StateVA GenderF GenderM Height Income
23 1 0 0 0 1 0 61 5000
13 0 1 0 0 0 1 55 1000
36 1 0 0 0 0 1 66 3000
31 0 0 0 1 1 0 64 4000
58 0 1 0 0 1 0 70 30000
29 0 0 1 0 1 0 63 10000
base.dummy <- dummy.data.frame(base, names = "Gender")
kable(head(base.dummy),format = "markdown")
Age State GenderF GenderM Height Income
23 NJ 1 0 61 5000
13 NY 0 1 55 1000
36 NJ 0 1 66 3000
31 VA 1 0 64 4000
58 NY 1 0 70 30000
29 TX 1 0 63 10000

Reescalar variables

Para entender la necesidad de escalar variables analizaremos la siguiente base de datos

kable(head(base)) %>% column_spec(5,background = "pink") %>% row_spec(c(2,5),background = "yellow") %>% kable_styling(full_width = T)
Age State Gender Height Income
23 NJ F 61 5000
13 NY M 55 1000
36 NJ M 66 3000
31 VA F 64 4000
58 NY F 70 30000
29 TX F 63 10000

Se puede observar que aunque las cuadrículas pintadas en amarillo pertenecen a la misma variable (Income) la diferencia en valor numérico es bastante grande, lo que puede dificultar la implementación de técnicas de Machine Learning. En R cuando queremos escalar las variables hacemos los siguientes procedimientos.

library(scales)

#Ahora reescalamos un variable de la base de datos
kable(rescale(base$Income))
x
0.0740741
0.0000000
0.0370370
0.0555556
0.5370370
0.1666667
0.9074074
1.0000000
0.0185185
0.3518519

Por defecto la función rescale me realiza un escalado de la variables en un rango [0,1] ya que aplica el siguiente método para escalar

\[x.escalada = \frac{x-min(x)}{max(x)-min(x)}\]

Si queremos modificar la escala modelos hacer lo siguiente

kable(rescale(base$Income,to=c(1,10)))
x
1.666667
1.000000
1.333333
1.500000
5.833333
2.500000
9.166667
10.000000
1.166667
4.166667

Normalización

la normalización significa ajustar los valores medidos en diferentes escalas respecto a una escala común, a menudo previo a un proceso de realizar promedios. En R se pueden escalar las variables de una base de datos por medio de el siguiente procedimiento.

base.escalada<- scale(base[,c(4,5)],center=T,scale=T)
kable(head(base.escalada),format = "markdown")
Height Income
-0.7218398 -0.6377182
-2.0342757 -0.8339392
0.3718568 -0.7358287
-0.0656218 -0.6867734
1.2468141 0.5886629
-0.2843611 -0.3924420